home *** CD-ROM | disk | FTP | other *** search
/ 64'er Special 83 / 64er_Magazin_Sonderheft_83_19xx_Markt__Technik_de_Side_A.d64 / ultraboot maker+ (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  7KB  |  233 lines

  1. 1000 rem *** ultraboot maker
  2. 1010 poke 53280,6:poke 53281,6
  3. 1020 poke 55,0:poke 56,37:clr
  4. 1030 dim m%(5,20),mf%(9),me%(9):mf%(0)=999
  5. 1040 print "[147][154] *** [213]ltraboot [205]aker ***"
  6. 1050 print "* (c) 1992 [205]artin [208]fost"
  7. 1060 print " *** maximale [198]ilelaenge : 104 [194]loecke"
  8. 1070 print:print "[213]ltraboot [205]aker erstellt auf [196]iskette"
  9. 1080 print "ein [213]-[198]ile, was sehr schnell ein be -"
  10. 1090 print "stimmtes [208]rogramm laedt ."
  11. 1100 print
  12. 1110 rem *** file laden
  13. 1120 print " *** [208]rogramm laden"
  14. 1130 input "==> [208]rogrammname = ";n$
  15. 1140 print "==> [196]iskette mit '";n$;"' einlegen !"
  16. 1150 get a$:if a$="" then 1150
  17. 1160 open 1,8,15,"i":gosub 2610
  18. 1170 open 2,8,0,n$:gosub 2610
  19. 1180 print "  '";n$;"' wird gelesen ."
  20. 1190 get#2,a$,a$
  21. 1200 for i=53120 to 53212
  22. 1210 read d:c=c+d:poke i,d
  23. 1220 next i
  24. 1230 if c-12129 then print "??? [196]ata-[198]ehler !":goto 2550
  25. 1240 sys 53120
  26. 1250 ea=peek(174)+256*peek(175)+1
  27. 1260 bl=int((ea-9474)/254)+1
  28. 1270 print "     [194]loecke : ";bl
  29. 1280 print "     [194]ytes   :";ea-9473
  30. 1290 if bl>104 then print "??? [198]ile zu lang !":goto 2550
  31. 1300 close 2
  32. 1301 open 2,8,2,n$+"+":i=0
  33. 1302 input#1,e:if e then 1309
  34. 1303 print " *** [213]ltraboot [205]enue-[198]ile !"
  35. 1304 input#2,mf%(i),me%(i):i=i+1
  36. 1305 if st=0 then 1304
  37. 1309 close 2
  38. 1310 print "==> [196]iskette, die [213]ltraboot erhalten"
  39. 1320 print "  soll, einlegen !"
  40. 1330 get a$:if a$="" then 1330
  41. 1340 open 2,8,2,"#1":gosub 2610
  42. 1350 rem *** formatieren
  43. 1360 print " *** [198]ormatierung"
  44. 1370 gosub 2760
  45. 1380 t=36:i=0
  46. 1390 de=0:gs=17:sd=5
  47. 1400 if bl>84 then de=32:gs=18:sd=5
  48. 1410 if bl>89 then de=64:gs=19:sd=5
  49. 1420 if bl>94 then de=96:gs=21:sd=6
  50. 1430 print#2,chr$(de)+chr$(gs);
  51. 1440 print "     [211]ektoren pro [212]rack :";gs
  52. 1450 print#1,"m-e"+chr$(23)+chr$(4)+chr$(t);
  53. 1460 print "  [212]rack";t;"wird formatiert .[145]"
  54. 1470 gosub 2610
  55. 1480 i=i+gs:if i>bl then 1500
  56. 1490 t=t+1:goto 1450
  57. 1500 print "  [198]ormatierung abgeschlossen ."
  58. 1510 print " *** [197]intrag im [196]irectory"
  59. 1520 print "  [197]in freier [208]latz im [196]irectory wird"
  60. 1530 print "  gesucht ."
  61. 1540 rem *** freie bloecke finden
  62. 1550 print#1,"u1 2 0 18 0":gosub 2610
  63. 1560 print#1,"b-p 2 73"
  64. 1570 get#2,a$:if a$="" then a$=chr$(0)
  65. 1580 i=0
  66. 1590 if (asc(a$) and 2^i) = 0 then m%(0,s)=1
  67. 1600 s=s+1:if s>18 then 1640
  68. 1610 i=i+1: if i<8 then 1590
  69. 1620 goto 1570
  70. 1630 rem *** freien eintrag finden
  71. 1640 s=1
  72. 1650 print#1,"u1 2 0 18";s:gosub 2610
  73. 1660 i=2
  74. 1670 print#1,"b-p 2";i
  75. 1680 get#2,a$:if a$="" then 1730
  76. 1690 i=i+32:if i<227 then 1670
  77. 1700 print#1,"b-p 2 1"
  78. 1710 get#2,a$:if a$<>chr$(255) then s=asc(a$):goto 1650
  79. 1720 ns=s+3:i=0:gosub 2670
  80. 1730 nd=ns:ns=18:gosub 2670
  81. 1740 print#1,"b-a:0 18";ns
  82. 1750 if i then 1870
  83. 1760 rem *** neuer dir-block
  84. 1770 print#1,"b-a:0 18";nd
  85. 1780 print#1,"b-p 2 0"
  86. 1790 print#2,chr$(18)+chr$(nd);
  87. 1800 print#1,"u2 2 0 18";s:gosub 2610
  88. 1810 for i=0 to 254
  89. 1820 print#2,chr$(0);
  90. 1830 next i
  91. 1840 print#2,chr$(255);
  92. 1850 i=2:s=nd
  93. 1860 rem *** file eintragen
  94. 1870 print#1,"b-p 2";i
  95. 1880 print#2,chr$(130);
  96. 1890 print#2,chr$(18)+chr$(ns);
  97. 1900 print#2,"u"+chr$(160);
  98. 1910 print#2,left$(n$+"              ",14);
  99. 1920 for j=19 to 29
  100. 1930 print#2,chr$(0);
  101. 1940 next j
  102. 1950 print#1,"u2 2 0 18";s:gosub 2610
  103. 1960 print "  [196]as [213]-[198]ile ist eingetragen in :"
  104. 1970 print "     [212]rack   : 18"
  105. 1980 print "     [211]ektor  :";s
  106. 1990 print "     [197]intrag :";int(i/32)+1
  107. 2000 rem *** u-file schreiben
  108. 2010 print " *** [213]-[198]ile schreiben"
  109. 2020 gosub 2760
  110. 2030 print#2,chr$(de)+chr$(gs);
  111. 2040 close 2
  112. 2050 open 2,8,2,"#0":gosub 2610
  113. 2060 gosub 2760
  114. 2070 print#1,"b-p 2 207":print#2,chr$(de);
  115. 2080 print "  [196]as [213]-[198]ile und [194]ootprogramm wird"
  116. 2090 print "  geschrieben in :"
  117. 2100 print "     [212]rack   : 18"
  118. 2110 print "     [211]ektor  :";ns
  119. 2120 print#1,"u2 2 0 18";ns:gosub 2610
  120. 2130 print "  [202]etzt wird das [196]iskettenbootprogramm"
  121. 2140 print "  und '";n$;"' geschrieben ."
  122. 2150 rem *** block 36/0 schreiben
  123. 2160 gosub 2760
  124. 2170 print#1,"b-p 2 10"
  125. 2180 print#2,chr$(de);
  126. 2190 t=36:s=0:i=0:m%(1,0)=1
  127. 2200 poke 174,1:poke 175,37
  128. 2210 print#1,"b-p 2 254"
  129. 2215 bz=0
  130. 2220 goto 2400
  131. 2230 rem *** programm schreiben
  132. 2240 print#1,"b-p 2 0"
  133. 2250 sys 53175
  134. 2260 ad=peek(174)+256*peek(175)
  135. 2270 if ad<ea then 2400
  136. 2280 a=ea-9474-254*int((ea-9473)/254)
  137. 2290 e=0:if (a and 128)=0 then e=1
  138. 2300 if (a and 64)=0 then e=e+4
  139. 2310 if (a and 32)=0 then e=e+2
  140. 2320 if (a and 16)=0 then e=e+8
  141. 2330 if (a and 8)=0 then e=e+16
  142. 2340 if (a and 4)=0 then e=e+64
  143. 2350 if (a and 2)=0 then e=e+32
  144. 2360 if (a and 1)=0 then e=e+128
  145. 2370 print#2,chr$(e);chr$(0);
  146. 2380 goto 2480
  147. 2390 rem *** freien block finden
  148. 2400 ns=s+sd:nt=t:c=gs
  149. 2410 ns=ns+1:if ns>=gs then ns=ns-gs
  150. 2420 if m%(nt-35,ns)=0 then 2450
  151. 2430 c=c-1:if c>0 then 2410
  152. 2440 nt=nt+1:goto 2420
  153. 2450 m%(nt-35,ns)=1
  154. 2460 rem *** block schreiben
  155. 2461 i=0
  156. 2462 if mf%(i)>bz then 2470
  157. 2463 if mf%(i)=bz then a=me%(i):goto 2290
  158. 2464 i=i+1:goto 2462
  159. 2470 print#2,chr$(ns)+chr$(nt);
  160. 2480 print#1,"m-e"+chr$(36)+chr$(4)+chr$(t)+chr$(s);
  161. 2490 print "  [212]rack :";t;"  [211]ektor :";s;"[157] [145]"
  162. 2500 gosub 2610
  163. 2510 t=nt:s=ns
  164. 2515 bz=bz+1
  165. 2520 if ad<ea then 2240
  166. 2530 print:print "  ";n$;" befindet sich auf [196]iskette ."
  167. 2540 print "  [218]um [211]tarten '[213]' absolut laden ."
  168. 2550 print#1,"i"
  169. 2560 close 2:close 1
  170. 2570 poke 56,160:clr
  171. 2580 end
  172. 2590 :
  173. 2600 rem *** diskstatus testen
  174. 2610 input#1,e,e$,et,es
  175. 2620 if e=0 then return
  176. 2630 print:print "??? [196]isk-[198]ehler !"
  177. 2640 print "   ";e;e$;et;es
  178. 2650 goto 2550
  179. 2660 rem *** block im dir. finden
  180. 2670 c=18
  181. 2680 if ns>18 then ns=ns-18
  182. 2690 if m%(0,ns)=0 then 2730
  183. 2700 ns=ns+1:c=c-1:if c then 2680
  184. 2710 print "??? [203]ein [194]lock mehr frei !"
  185. 2720 goto 2550
  186. 2730 m%(0,ns)=1
  187. 2740 return
  188. 2750 rem *** daten lesen
  189. 2760 c=0:print#1,"b-p 2 0"
  190. 2770 read d:if d>-1 then c=c+d:print#2,chr$(d);:goto 2770
  191. 2780 if d+c=0 then return
  192. 2790 print "??? [196]ata-[198]ehler !"
  193. 2800 print "  falsche [208]ruefsumme  :";d
  194. 2810 goto 2550
  195. 2820 :
  196. 2830 rem *** loadsaveroutinen
  197. 2840 data 162,2,32,198,255,160,0,132,174,169,37,133,175,32,207,255,133,4,169,0
  198. 2850 data 162,7,70,4,176,3,29,175,207,202,16,246,230,174,208,2,230,175,145,174
  199. 2860 data 165,144,240,225,76,204,255,1,4,2,8,16,64,32,128,169,54,133,1,162,2,32
  200. 2870 data 201,255,160,0,177,174,32,210,255,200,192,254,144,246,165,174,105,253
  201. 2880 data 133,174,144,2,230,175,169,55,133,1,76,204,255
  202. 2890 rem *** formatierroutine
  203. 2900 data 165,8,133,81,173,65,4,133,67,173,0,28,41,159,13,64,4,141,0,28,76,0
  204. 2910 data 251,32,0,193,162,1,169,10,141,32,6,169,160,141,33,6,169,15,141,34,6
  205. 2920 data 172,5,2,132,8,169,224,133,1,165,1,48,252,201,2,176,1,96,76,10,230
  206. 2930 data -5531
  207. 2940 rem *** writeroutine
  208. 2950 data 169,3,133,49,173,0,28,41,159,13,61,4,141,0,28,173,62,4,133,67,165,1
  209. 2960 data 41,2,208,3,76,152,246,169,208,133,1,76,117,245,32,24,193,173,5,2,133
  210. 2970 data 8,173,6,2,133,9,169,226,162,1,134,249,32,125,213,76,153,213,-5930
  211. 2980 rem *** u-file track 18
  212. 2990 data 0,196,36,3,52,3,202,241,237,246,62,241,47,243,102,254,165,244,237,245
  213. 3000 data 169,8,162,226,32,177,255,169,111,32,147,255,189,229,2,32,168,255,232
  214. 3010 data 208,247,32,174,255,173,17,208,41,239,141,17,208,120,169,32,141,0,221
  215. 3020 data 169,1,133,45,169,8,133,46,160,0,169,0,141,0,221,44,0,221,48,251,162
  216. 3030 data 32,234,44,0,221,48,2,38,255,173,0,221,74,74,13,0,221,74,74,13,0,221
  217. 3040 data 74,74,13,0,221,142,0,221,145,45,200,208,210,201,255,240,12,165,45,105
  218. 3050 data 254,133,45,144,198,230,46,208,194,160,254,177,45,101,45,133,45,144,2
  219. 3060 data 230,46,169,199,141,0,221,173,17,208,9,16,141,17,208,88,32,21,253,169
  220. 3070 data 0,32,113,168,76,174,167,77,45,69,5,2,238,13,2,238,20,2,174,73,2,224
  221. 3080 data 44,208,243,189,197,2,157,0,4,202,16,247,76,17,4,169,3,133,49,173,0,28
  222. 3090 data 41,159,9,0,141,0,28,76,209,244,169,36,133,8,74,141,5,28,162,0,134,9
  223. 3100 data 232,134,249,169,224,32,125,213,32,153,213,76,17,3,-27947
  224. 3110 rem *** leseroutine 36/0
  225. 3120 data 169,4,133,49,173,0,28,41,159,9,0,141,0,28,76,209,244,169,8,133,8,141
  226. 3130 data 0,24,172,255,3,173,254,3,132,6,133,7,169,224,162,0,134,249,32,125,213
  227. 3140 data 32,24,193,32,153,213,120,160,0,173,0,24,74,176,250,185,0,4,162,10,142
  228. 3150 data 0,24,74,74,74,74,166,8,142,0,24,141,0,24,10,41,15,141,0,24,185,0,4,41
  229. 3160 data 15,141,0,24,10,41,15,141,0,24,234,169,8,141,0,24,200,208,201,173,254
  230. 3170 data 4,172,255,4,208,171,169,18,133,6,169,176,88,133,0,165,0,48,252,76,231
  231. 3180 data 235,-12541
  232. 3190 rem *** ende
  233.